// Copyright 2020 Arthur Sonzogni. All rights reserved.
// Use of this source code is governed by the MIT license that can be found in
// the LICENSE file.
#include <memory>  // for allocator, __shared_ptr_access, shared_ptr
#include <string>  // for string, basic_string
#include <vector>  // for vector

#include "ftxui/component/captured_mouse.hpp"  // for ftxui
#include "ftxui/component/component.hpp"  // for Radiobox, Horizontal, Menu, Renderer, Tab
#include "ftxui/component/component_base.hpp"      // for ComponentBase
#include "ftxui/component/screen_interactive.hpp"  // for ScreenInteractive
#include "ftxui/dom/elements.hpp"  // for Element, separator, hbox, operator|, border

using namespace ftxui;

int main() {



    // 文本
    // Element text(std::string text);
    // Element vtext(std::string text);
    // 以下是示例
    auto elm = text("这是一个水平的文本");
    // auto elm = vtext("这是一个垂直的文本");

    // Element paragraph(std::string text);
    // Element paragraphAlignLeft(std::string text);
    // Element paragraphAlignRight(std::string text);
    // Element paragraphAlignCenter(std::string text);
    // Element paragraphAlignJustify(std::string text);
    // 以下是示例
    // auto elm = paragraph("这是一个段落");
    // auto elm = paragraphAlignCenter("这是一个居中对齐段落");
    // auto elm = paragraphAlignRight("这是一个右对齐的文本");

    // 进度条
    // Element gauge(float progress);
    // Element gaugeLeft(float progress);
    // Element gaugeRight(float progress);
    // Element gaugeUp(float progress);
    // Element gaugeDown(float progress);
    // Element gaugeDirection(float progress, Direction direction);
    // 以下是示例
    // auto elm = gauge(0.6);

    // 分界线
    // Element separator();
    // Element separatorLight();
    // Element separatorDashed();
    // Element separatorHeavy();
    // Element separatorDouble();
    // Element separatorEmpty();
    // Element separatorStyled(BorderStyle);
    // Element separator(Pixel);
    // Element separatorCharacter(std::string);
    // 以下是示例
    // auto elm = separatorDouble();


    // 窗口
    // Element window(Element title, Element content);
    // 以下是示例
    // auto elm = window(text("标题"), text("内容"));

    // 创建一个屏幕, 宽度为全屏, 高度根据元素大小伸展
    auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(elm));

    // 将元素设置在屏幕对象中展现
    Render(screen, elm);

    // 打印屏幕
    screen.Print();

}